package com.ungs.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Restrictions;

import com.ungs.dao.ClienteDAO;
import com.ungs.entities.Cliente;

public class ClienteDAOImpl extends EntidadDAOImpl<Cliente> implements
		ClienteDAO {

	@SuppressWarnings("unchecked")
	@Override
	public List<Cliente> getClienteByFilter(String param, boolean todos)
			throws HibernateException {
		List<Cliente> clienteList = new ArrayList<Cliente>();
		logger.info("Obteniendo cliente por filtro");
		try {
			iniciaConexion();
			Criteria criteria = getSession().createCriteria(Cliente.class);
			criteria.add(Restrictions.like("razonSocial", param + "%"));

			if (!todos) {
				criteria.add(Restrictions.eq("estadoLogico", "A"));
			}

			clienteList = criteria.list();

		} catch (HibernateException he) {
			logger.error("Error al traer el filtro de clientes: "
					+ Cliente.class + "DAO");
			manejaExcepcion(he);
			throw he;
		} finally {
			getSession().close();
		}

		return clienteList;
	}

}
